/////////////////////////////////////////////////////////////////////////////
// 2023 -
//open source under Apache License Version 2.0
/////////////////////////////////////////////////////////////////////////////
//  Modifications by Kumo Inc.
// Copyright (C) Kumo inc. and its affiliates.
// Author: Jeff.li lijippy@163.com
// All rights reserved.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published
// by the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.
//


#include <kmhdfs/client/erasure_coder_options.h>

namespace Hdfs {
namespace Internal {

ErasureCoderOptions::ErasureCoderOptions(int _numDataUnits, int _numParityUnits) :
    ErasureCoderOptions(_numDataUnits, _numParityUnits, false) {}

ErasureCoderOptions::ErasureCoderOptions(int _numDataUnits, int _numParityUnits, bool _allowVerboseDump) {
    numDataUnits = _numDataUnits;
    numParityUnits = _numParityUnits;
    numAllUnits = _numDataUnits + _numParityUnits;
    allowVerboseDump = _allowVerboseDump;
}

/**
 * The number of data input units for the coding. A unit can be a byte,
 * chunk or buffer or even a block.
 * @return count of data input units
 */
int ErasureCoderOptions::getNumDataUnits() const {
    return numDataUnits;
}

/**
 * The number of parity output units for the coding. A unit can be a byte,
 * chunk, buffer or even a block.
 * @return count of parity output units
 */
int ErasureCoderOptions::getNumParityUnits() const {
    return numParityUnits;
}


/**
 * The number of all the involved units in the coding.
 * @return count of all the data units and parity units
 */
int ErasureCoderOptions::getNumAllUnits() const {
    return numAllUnits;
}

/**
 * Allow dump verbose debug info or not.
 * @return true if verbose debug info is desired, false otherwise
 */
bool ErasureCoderOptions::isAllowVerboseDump() const {
    return allowVerboseDump;
}

}
}
